home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=(c) 2004 Stefano Mora stefano.mora@libero.it * (c) 2003 Andrea Cristaudo achris@tiscalinet.it Title=Yahoo!Cinema Description=Get movie info from yahoo.it Site=http://it.movies.yahoo.com Language=IT Version=1.0.1 - 02.02.2005 Requires=3.5.0 Comments=**Changes**|Dino Librandi dinolib@libero.it: adapted to v.3.5.0 License=This program is free software; you can|redistribute it and/or modify it under the|terms of the GNU General Public License as|published by the Free Software Foundation;|either version 2 of the License, or (at your|option) any later version. GetInfo=1 ***************************************************) program YahooCinema; var MovieName: string; TheMovieAddress: string; const PATHLOG = 'c:\Programmi\Ant Movie Catalog\Log\LogYahoo\'; // --- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer; var i: Integer; begin result := -1; if StartAt < 0 then StartAt := 0; for i := StartAt to List.Count-1 do if Pos(Pattern, List.GetString(i)) <> 0 then begin result := i; Break; end; end; // --- procedure AnalyzePage(Address: string); var Page: TStringList; LineNr: integer; BeginPos: integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); //Page.LoadFromFile('c:\Programmi\Ant Movie Catalog\LogYahoo\il quinto elemento.film'); // Debug //Page.SavetoFile(PATHLOG+MovieName+'.res'); LineNr := FindLine('Non abbiamo trovato nessun risultato', Page, 0); if LineNr<>-1 then begin ShowMessage('Film non trovato'); exit; end; LineNr := FindLine('<font face=arial,helvetica size=+1><b>Risultati ricerca</b></font>', Page, 0); if LineNr = -1 then begin // Trovato il film SetField(fieldURL, Address); AnalyzeMoviePage(Page); //Debug //Page.SaveToFile('c:\Programmi\Ant Movie Catalog\LogYahoo\'+MovieName+'.film'); end else begin // Crea una lista di risultati PickTreeClear; AddMoviesTitles(Page); if TheMovieAddress='' then begin if PickTreeExec(Address) then begin SetField(fieldURL, Address); Page.Text := GetPage(Address); //Debug // Page.SaveToFile('c:\Programmi\Ant Movie Catalog\LogYahoo\'+MovieName+'.film2'); AnalyzeMoviePage(Page); end; end else begin SetField(fieldURL, TheMovieAddress); Page.Text := GetPage(TheMovieAddress); AnalyzeMoviePage(Page); //Debug // Page.SaveToFile('c:\Programmi\Ant Movie Catalog\LogYahoo\'+MovieName+'.film3'); end; end; Page.Free; end; // --- procedure AnalyzeMoviePage(Page: TStringList); var Fine: Integer; Line: string; LineNr: Integer; BeginPos, EndPos: Integer; Field: integer; strTmp: string; begin Fine := 0; // Cerca il tag che identifica il titolo del film LineNr := FindLine('<td><font face=arial size=+1 color="#333366"><b>', Page, 0); if LineNr > -1 then begin //Translated Title + Year Line := Page.GetString(LineNr); HTMLRemoveTags(Line); strTmp := copy(Line, 1, pos(' (', Line)); SetField(fieldTranslatedTitle, strTmp); SetField(fieldOriginalTitle, strTmp); // Setta lo stesso titolo: se l'originale sarα diverso, lo modificherα poi // Ricava l'anno tra le parentesi Delete(Line, 1, pos(' (', Line) + 1); Delete(Line, pos(')', Line), pos(')', Line) + 1); SetField(fieldYear, Line); // Cerca il genere LineNr := FindLine('Genere:', Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('</b>', Line)+4; EndPos := pos('<br>', Line); SetField(fieldCategory, copy(Line, BeginPos, EndPos-BeginPos)); end // Durata + origine LineNr := FindLine('Durata', Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('</b>', Line)+4; EndPos := pos('<b> -', Line); strTmp := copy(Line, BeginPos, EndPos-BeginPos); SetField(fieldLength, strTmp); BeginPos := pos('ne: </b>', Line)+8; EndPos := pos('<p>', Line); SetField(fieldCountry, copy(Line, BeginPos, EndPos-BeginPos)); end // Descrizione LineNr := FindLine('</table>', Page, LineNr); Line := Page.GetString(LineNr+2); // ShowMessage(Line); SetField(fieldDescription, Line); // Titolo originale LineNr := FindLine('Titolo Originale:', Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr); BeginPos := pos('</b>', Line)+4; EndPos := pos('<br>', Line); SetField(fieldOriginalTitle, copy(Line, BeginPos, EndPos-BeginPos)); end // Regia LineNr := FindLine('Regia:', Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr+1); HTMLRemoveTags(Line); SetField(fieldDirector, Line); end // Attori LineNr := FindLine('Attori:', Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr+1); HTMLRemoveTags(Line); SetField(fieldActors, Line); end // Prodotto LineNr := FindLine('Prodotto da:', Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr+1); HTMLRemoveTags(Line); SetField(fieldProducer, Line); end // Critica LineNr := FindLine('Critica', Page, LineNr); if LineNr <> -1 then begin Line := Page.GetString(LineNr+11); HTMLRemoveTags(Line); SetField(fieldComments, Line); end if pos('<b>Titolo Originale: </b>', Line) = 1 then begin HTMLRemoveTags(Line); Delete(Line, 1, 18); SetField(fieldOriginalTitle, Line); end else if pos('alt="Immagine"', Line) <> 0 then begin Delete(Line, 1, pos('<img ', Line) + 10); Delete(Line, pos('" width=', Line), pos('>', Line) + 1); GetPicture(Line); end //DisplayResults; end; end; // --- procedure AddMoviesTitles(Page: TStringList); var LineNr: Integer; NewLineNr: Integer; Line: string; MovieTitle, MovieAddress: string; BeginPos, EndPos: Integer; begin TheMovieAddress := '*'; LineNr := 0; LineNr := FindLine('<font face=arial,helvetica><b>Risulati Film</b>',Page,LineNr); LineNr := LineNr + 3; PickTreeAdd('Risultati ricerca per "' + MovieName + '":', ''); while LineNr > 2 do begin Line := Page.GetString(LineNr); BeginPos := pos('<li><b><a href="',Line)+16; EndPos := pos('">',Line); MovieAddress := copy(Line,BeginPos,EndPos-BeginPos); Delete(Line,1,EndPos + 1); BeginPos := 1; EndPos := -1; MovieTitle := Line; HTMLRemoveTags(MovieTitle); HTMLDecode(Movietitle); PickTreeAdd(MovieTitle, MovieAddress); NewLineNr := FindLine('<li><b><a href="',Page,LineNr+1); if NewLineNr <> (LineNr + 1) then LineNr := 2 else LineNr := NewLineNr; if TheMovieAddress='*' then TheMovieAddress := MovieAddress else TheMovieAddress := ''; end; if TheMovieAddress='*' then TheMovieAddress := ''; end; // main begin if CheckVersion(3,5,0) then begin MovieName := GetField(fieldOriginalTitle); if MovieName = '' then MovieName := GetField(fieldTranslatedTitle); if Input('Yahoo!Cinema Import', 'Inserire il titolo del film:', MovieName) then begin AnalyzePage('http://it.search.movies.yahoo.com/search/movies_db_it?mt='+UrlEncode(MovieName)); end; end else ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)'); end.